Problem s hledanim v datech (BDE+MSSQL)

Otázka od: EFG developer

11. 9. 2002 17:15

Zdravim,
mame aplikaci, ktera je prez BDE a SQLLinks pripojena na MSSQL.
Pouzivame datasety. Pokud potrebuji najit zaznam nastavim u datasetu
Filter, FilterOptions a udelam FindFirst, funguje to bajecne,
ALE:

pokud chci hledat slova zacinajici znakem s diakritikou (tusim ze staci
i obsahujici diakritiku), musim presne dodrzet velikost pismen, i kdyz
mam ve FilterOptions nastaveno foCaseInsensitive.

Nevite jak docilit aby mi to slova zacinajici diakritikou hledalo bez
ohledu na velikost pismen ?

Dekuji Petr Sikola

PS: prosim nekomentujte pouziti BDE, vim, ze to neni nejlepsi, ale
musime s tim zit.

Odpovedá: bardon

11. 9. 2002 16:15

Asi bude zalezet i na verzi MSSQL. Domnivam se (bez zaruky), ze BDE ten
filtr pouzije ve Where klausuli a udela novy select. Pokud by to bylo tak,
pak by zalezelo na collation u daneho fieldu na databazi. Jestli je to ale
jinak a BDE si to filtruje samo, pak na to collation asi vliv mit nebude.

(V kazdem pripade, jestli to nedela select na databazi, tak se mi takovy
fitr nelibi, radji bych pouzil ten where v selectu.)

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of EFG developer

Zdravim,
mame aplikaci, ktera je prez BDE a SQLLinks pripojena na MSSQL.
Pouzivame datasety. Pokud potrebuji najit zaznam nastavim u datasetu
Filter, FilterOptions a udelam FindFirst, funguje to bajecne,
ALE:

pokud chci hledat slova zacinajici znakem s diakritikou (tusim ze staci
i obsahujici diakritiku), musim presne dodrzet velikost pismen, i kdyz
mam ve FilterOptions nastaveno foCaseInsensitive.



Odpovedá: EFG developer

11. 9. 2002 23:44

> Asi bude zalezet i na verzi MSSQL. Domnivam se (bez zaruky),
> ze BDE ten filtr pouzije ve Where klausuli a udela novy
> select. Pokud by to bylo tak, pak by zalezelo na collation u

ja mam data zobrazena v gridu a potrebuji se jen posunout na radek v tom
gridu, takze se novy select nedela.

> daneho fieldu na databazi. Jestli je to ale jinak a BDE si to
> filtruje samo, pak na to collation asi vliv mit nebude.

asi to tak bude, ale proc mi to nehleda ???

> (V kazdem pripade, jestli to nedela select na databazi, tak
> se mi takovy fitr nelibi, radji bych pouzil ten where v selectu.)

to se ale podle me neda resit jinak nez bez selectu, ja se potrebuju jen
posunout na radek v gridu
 
> MSSQL. Pouzivame datasety. Pokud potrebuji najit zaznam
> nastavim u datasetu Filter, FilterOptions a udelam FindFirst,
> funguje to bajecne,
> ALE:
> pokud chci hledat slova zacinajici znakem s diakritikou
> (tusim ze staci i obsahujici diakritiku), musim presne
> dodrzet velikost pismen, i kdyz mam ve FilterOptions
> nastaveno foCaseInsensitive.

Petr Sikola

Odpovedá: Jan Sebelík

12. 9. 2002 1:39

> Odesílatel: bardon <bardon@akord-soft.cz>
> Asi bude zalezet i na verzi MSSQL. Domnivam se (bez zaruky), ze BDE ten
> filtr pouzije ve Where klausuli a udela novy select. Pokud by to bylo tak,
> pak by zalezelo na collation u daneho fieldu na databazi. Jestli je to ale
> jinak a BDE si to filtruje samo, pak na to collation asi vliv mit nebude.
Pokud se nemylim, property Filter se vyhodnocuje na klientovi, tedy zadny novy
"select".
Nevyhodnocuje se tedy ani v BDE, spise primo v Datasetu.

> (V kazdem pripade, jestli to nedela select na databazi, tak se mi takovy
> fitr nelibi, radji bych pouzil ten where v selectu.)
Filtr na klientovi lze pouzit, musi se ale pouzit "rozumne".

At uz pouziju jakoukoli technologii pro pristup k datum (BDE nebo cokoli
jineho), mel bych pocitat s tim, ze veskera data, ktera splnuji podmínku
"where", potecou na klienta. Mely by to tedy byt radove stovky, mozna snad
jeste tisice zaznamu. No a kdyz uz tam ta data mam, proc si je detailne
"nedofiltrovat", abych nemusel znovu sahat na server.

To ovsem neresi puvodni dotaz, proc nefunguje "caseinsensitive" filter nad MS
SQL. Bylo by treba se podivat, jak je to implementovano.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: Tomas Grepl

11. 9. 2002 22:43

> mame aplikaci, ktera je prez BDE a SQLLinks pripojena na MSSQL.
...
> pokud chci hledat slova zacinajici znakem s diakritikou (tusim ze staci
> i obsahujici diakritiku), musim presne dodrzet velikost pismen, i kdyz
> mam ve FilterOptions nastaveno foCaseInsensitive.
> Nevite jak docilit aby mi to slova zacinajici diakritikou hledalo bez
> ohledu na velikost pismen ?

A jakym s jakym nastavenim byla vytvorena databaze ?
Mam pocit, ze case sensitivita se urcuje pri vytvareni databaze spolu s
jazykovym nastavenim.

Tomas

Odpovedá: EFG developer

12. 9. 2002 7:53

> A jakym s jakym nastavenim byla vytvorena databaze ?
> Mam pocit, ze case sensitivita se urcuje pri vytvareni
> databaze spolu s jazykovym nastavenim.

Asi jste me nepochopily:
pokud hledam v datasetu bez diakritiky, tak je vse OK, ale pokud hledam
s diakritikou musim dodrzet velikost pismen bez ohledu na
foCaseInsensitive ve FilterOptions.
Dle meho nazoru se pri tomto hledani neprovadi znovu select do databaze
a hleda se pouze v datasetu (gridu) - takze by podle me nemel mit vliv
colation v databazi, pokud vidim data v gridu zobrazena spravne.

Petr Sikola

Odpovedá: Lebeda David

12. 9. 2002 10:44

> pokud hledam v datasetu bez diakritiky, tak je vse OK, ale pokud
> hledam s diakritikou musim dodrzet velikost pismen bez ohledu na
> foCaseInsensitive ve FilterOptions. Dle meho nazoru se pri tomto
> hledani neprovadi znovu select do databaze a hleda se pouze v datasetu
> (gridu) - takze by podle me nemel mit vliv colation v databazi, pokud
> vidim data v gridu zobrazena spravne.

Ahoj,

nevim, jak je implementovan filter, ale neuvazoval jsi misto property Filter
pouzit
udalost OnFilterRecord? Myslim, ze efekt by mohl byt stejny a porovnani si
napises
sam s pomoci ANSI porovnavaci funkce (AnsiCompareText apod., viz help).

David Lebeda

Odpovedá: bardon

12. 9. 2002 7:22

Posunout na radek pres locate, to mi fungovalo korektne i s ceskymi znaky.
Ale mam dojem, ze to kolegove nejak upravovali, ted nestiham, ale podivam se
do kodu co tam najdu, urcite nam locate funguje spravne i s ceskymi znaky
(malymi i velkymi).

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of EFG developer

to se ale podle me neda resit jinak nez bez selectu, ja se potrebuju jen
posunout na radek v gridu


Odpovedá: tuffi@email.cz

12. 9. 2002 18:26

Ahoj, u MSSQL zalezi taky na zvolene kodove strance, nastaveni pouzivani ANSI
znaku a podobnych "drobnostech"   Proto ten dotaz na nastaveni  

--- Původní zpráva ---
Od: "EFG developer" <developer@efg.cz>
Datum: 12.09.2002 08:52:36

> A jakym s jakym nastavenim byla vytvorena databaze ?
> Mam pocit, ze case sensitivita se urcuje pri vytvareni
> databaze spolu s jazykovym nastavenim.

Asi jste me nepochopily:
pokud hledam v datasetu bez diakritiky, tak je vse OK, ale pokud hledam
s diakritikou musim dodrzet velikost pismen bez ohledu na
foCaseInsensitive ve FilterOptions.
Dle meho nazoru se pri tomto hledani neprovadi znovu select do databaze
a hleda se pouze v datasetu (gridu) - takze by podle me nemel mit vliv
colation v databazi, pokud vidim data v gridu zobrazena spravne.

Petr Sikola




______________________________________________________________________________
Domácí spotřebiče a elektronika za akční ceny ? slevy až 50 %.
Klikněte na: http://www.obchodni-dum.cz/index.phtml?prov=54&akce=yes